"It is the fate of all operating systems to become free," Neal Stephenson wrote in his book In the Beginning Was the Command Line. Stephenson, author of Snow Crash and Cryptonomicon, discovered the wonders of UNIX and Linux after years of frustration as a Macintosh programmer. But now his prophesy is coming to pass, with Apple's OS X.1. The new OS sits on Darwin, a free & open expression of BSD. One Linux geek calls it "The first UNIX with a desktop UI."
In Command Line, Stephenson compares Microsoft, Apple and the Linux community to three car dealerships. Microsoft sells hulking and unreliable station wagons and off road vehicles that somehow become popular. The Linux dealership consists of "a bunch of RVs, yurts, tepees and geodesic domes set up in a field and organized by consensus. The people who live there are making tanks." The Apple dealiship sells "expensive but attractively styled cars with their innards hermetically sealed, so that how they worked was something of a mystery."
That kinda nails it. Which is why my jaw nearly hit the table when I called Apple's tech support for help with a new machine and the guy said "Let's open a shell." I thought, "Well Toto, I guess we're not in Cupertino any more." I wondered: could it be these guys are making tanks?
It was December of 2000, and I was banging on the beta version of OS X, which had been out for just a few weeks. It was quickly apparent that the OS was in sore need of both improvement and applications, not the least of which were the ones that mattered to Linux Journal readers. Yes, rebuilding on top of open source UNIX was an eXtreme move for one of the most proprietary companies in the business. But the OS was clearly still twitchy, and there wasn't enough going on yet to attract many Apple users, much less Linux geeks.
So I held off on reviewing the OS until the beta period was over and the .0 release of OS X was out. This one was better, but clearly not ready for prime time. There were lots of missing drivers, not to mention apps of both open and closed source varieties.
I decided to wait until I saw evidence that geeks were starting to put OS X to use. That evidence arrived at the O'Reilly Open Source Convention in July, where I showed up with a new G4 Titanium Powerbook, expecting it would be the only one there. But there were lots of them. Tim O'Reilly had one. So did Jeremie Miller, who sat around hacking on Jabber. At a meeting of seven Jabber weenies, four of them had the same Titanium laptop. When I asked Jeremie what he was doing on his, he said "compiling some code while I answer a little email." I think he was using pine. His desktop was a scattered stack of terminal windows.
In September OS X.1 came out along with Darwin 1.4.1, and suddenly the buzz was on. Now the OS could finally burn CDs and relate to other peripherals. Apps of all kinds were showing up in large numbers, including over a thousand ported over from various UNIX flavors. And the free software and open source weenies were all over it. The Fink project had come out with XDarwin (XonX) and a package manager based on Debian apt-get. The GNU-Darwin distribution came out, with this statement on its Web site: "Our mission is two-fold: Focus on new projects that leverage the unique capabilities of Darwin/Mach and help Apple users to enjoy the benefits of free software." And OS X was proving to work as another handy host for programs like MySQL, which reportedly compiles with barely a hitch.
By January (when I'm writing this), the OS was at 10.1.2, and things were finally solid.
So we checked in with our own geek constituency to see if OS X now had serious appeal.
Eric Soroos, a developer at Social Ecology:
The tools are there. I have less success compiling things from the net than I do under Linux, but then I'm not sure how much trouble I'd have on a comparable Free/Net/OpenBSD system. ./configure typically needs hints that it's a ppc/darwin system. I've had cases where I've had to hack makefiles to reflect paths to the java libraries. The .dylib extension also confuses makefiles. I've had more success with applications than with libraries.
OS X is certainly a new target for porting all of the accumulated unix software out there. The situation has also gotten a lot better with each release.
If I was doing scripting type pogramming, php/perl/shell, or java, I'd certainly be on OS X. If I was doing C/C++, then I'd at least be targeting OSX as well as Linux. But most importantly, if I had a laptop it would be a tiBook with OSX.
Nicholas Riley:
OS X is a better Unix than it is a Mac, mainly because the OS foundation has had a lot more maturing as Unix and Next/OpenStep than it has as a Mac. The parts that are new are mostly immature, buggy, and often hard to use.
The thing that's surprised me about OS X has been how much I've been able to move to it as a Unix: the XFree86 port is solid and reliable, something I use every day, and I haven't touched my "real" Unix box in months. Fink takes my favorite Unix packaging system, Debian's dpkg and APT, and moves it to OS X while simultaneously improving upon it. Programs like TeXshop, which combine benefits of Unix (robust, free, TeX support) with OS X's benefits (native PDF rendering) are great to see. Archetypal Mac applications like BBEdit have moved to embrace the Unix side of things, with great results such as Perl and shell integration.
The main issues with OS X as compared with Unix or Linux have to do with OS X's use in heterogenous networks and as a server... There's no large-scale multiprocessor support, no journaling file system, no logical volume management, no IPSEC or IPv6 support, and no backup software(!). You can't split an OS X installation among partitions easily. The NetInfo, NIS, NFS, SMB and Kerberos implementations need lots of work, not to mention a user interface.
Gabriel Ricard:
...about Linux and OSX... I had been using Linux on Macs (on my machines) and PC's for quite some time. LinuxPPC and YellowDog were pretty good distributions. I tried out Debian for a while too, and it was great. The thing is, they're all pretty much the same. It's Linux.
Development with Linux is quite simply much more of a chore than in OSX. But that's circumstantial. In Linux I was using Makefiles, trying to find my way through the autoconf/automake system, etc. One of the best development tools for writing graphical apps that I used was glade. Glade (in case you're not aware of it) is in some respects like Interface Builder for OSX, although much less powerful. Glade lets you develop an entire user interface for an application using the GTK+ widget library. It probably supports Gnome now too...
The one thing I like the most about development on OSX is the sense of stability. What is absolutely wonderful is that I don't have to install a new Cocoa package every few weeks or so. The Cocoa frameworks in OSX are very well designed and developed.
I love Project Builder and Interface Builder. I love using Objective-C. It's so easy to use and clean (compared to C++, which is a beast). Java is great too, but I hardly use it due to the bloat/complete-lack-of-performance factor. I know Linux has CodeWarrior, and so does OSX, but it's also not free. For being a free, built-in IDE, PB and IB are incredible. I believe Qt has a good IDE that can be used with KDE ( I think ? ). I never really cared for Qt that much. What I love the most about PB and IB is that I don't have to write a single line of code to create the interface. I just use IB to create the interface, write the classes and their selectors that the interface is attached to in IB, and build the app.
Paul Guthrie:
The real issue is what sort of apps you are writing.
If you are writing a straight command line app in C or C++, they are equivilent: Mac OS X = BSD, and BSD is pretty much as good as Linux for this stuff. There are some exceptions, mainly when you need to get into multi-threaded apps, apps that access kernel data structures, etc when you actually need to use Mach calls instead of directly BSD on MacOSX.
If you are writing web apps, again, they are equivilent: PHP, Java, Perl work on both. No problems, except there is a dearth of database connectivity currently for OSX. I'd give Linux the edge merely because of more open-source tools work out of the box.
If you are comparing writing GUI apps, then this is a different thing altogether. My belief is that the OSX environment is miles ahead of developing for the X-windows environment. Of course, you can run X on OSX (XDarwin), but the native Quartz display model, plus Interface Builder as the CASE tool allow for amazing apps to be developed in a much shorter time-frame IMHO.
I've used unix for decades and linux for about half that for teaching and then developing the software at http://virtualschool.edu/mybank. I've used Macintosh for about the same time, mainly for word processing and email. Software development was never an option because of the primitive support for Java. Then came OSX.
When I first installed 10.0.4 this summer, it was too slow and buggy to take seriously. But with the upgrade to 10.1 this fall, I'm doing more ond more of my work on OSX and using Linux less and less. The main inhibitors is getting familiar with fink/apt-get and the package system as an alternative to rpms, and OSX still doesn't hold a candle to linux for speed.
Graeme Hiebert:
I very much prefer development on Mac OS X over Linux, for the following reasons:
1) Having a single point of control, there isn't the same problem with library conflicts. On Linux, I always have to be concerned about what versions of system libraries the end users will have, whereas on Mac OS X I know that it will be upwardly compatible.
2) Objective C is a very cool language, especially in conjunction with the Cocoa framework. A complete GNUstep would be a great development environment, too, if it were a part of all Linux distributions, and didn't require downloading of several libraries just to get it installed.
3) Bundle/library loading in Mac OS X is much more solid than in Linux. The simple two-level namespace takes care of a lot of problems that I have with other Unices and namespace pollution when loading dynamic code.
4) Project Builder is a very nice IDE, and Interface Builder is an amazing piece of work.
5) Java is integrated with the operating system, and is always there. I can just assume that the end user will have it, and where the libraries are.
6) The whole idea of a framework bundle is SOOOO much more convenient than setting include paths, listing link libraries, and arranging to have the LD_LIBRARY_PATH set up correctly at runtime.
7) The user interface is miles ahead of where X11 can ever dream of being. Movements are fluid, everything looks good, and it all (pretty much) runs consistently.
I find that it does take a little longer to construct a piece of software on Mac OS X than on Linux, but in the end it's worth it, because it is a far cleaner result.
Steve Dekorte
I prefer OSXS for both web scripting and app development. The app dev tools(InterfaceBuilder and ProjectBuilder), the web server administration tools (ServerAdmin) and the user interface are light years ahead of anything I've seen on Linux. Though Linux may still be a better server OS depending on the application.
Jared "Danger" Earle:
Linux is great... with Open Source, you get the cool stuff (DVD Players, MP3-this-that-other) but no-one wants to fix the less glamorous aspects. OSX has a commercial company driving it and some of the best BSD people out there making sure it all works.
Avi Cherry:
Well, I'm a MacOS developer and do most of my server-side work on Linux. I think MacOSX is an excellent platform for doing unix development on. I've found that as a unix, OSX is very 'plain vanilla'. There are very few problems with porting between Linux, BSD and MacOSX, particularly in comparison to NeXTStep and OpenStep, which were a pain in the ass to port to due to incompatible compilers and tools. The IDE that's included with it (ProjectBuilder) is fairly nice, though it uses jam for doing its build rather than makefiles (this is a recent change). There is a working X implementation based on XFree86 that runs in either rooted or rootless mode. All the development tools are included in OSX on a separate CD.
Apple basically completely replaced the UNIX layer of NeXT with the userland of FreeBSD. I believe they also did some major work on integrating their changes of gcc back into the main port, also allowing them to have a fairly modern version of gcc. Apple also has made a commitment to keeping their BSD layer up to date with FreeBSD. They also now have a certain amount of control over the direction of FreeBSD since they just hired the lead developer. :-)
So, all in all, I think OSX and Linux make a great combination. Linux makes a great stable, compatible server platform that runs on commodity hardware. OSX makes a pleasant development platform, since I have access to excellent IDEs, text editors and other tools, while at the same time being able to recompile and deploy on Linux.
Joe Block:
I've been using linux since kernel 0.99, and Macs since the beginning. Mac OS X has been a godsend for me - easier to install & configure than Linux, same UNIX meat underneath. It's nice to be able to stick a CD into a machine and have a working unix in 15 minutes that has sound and GUI working 100%.
Plus I can run commercial applications. It's very nice to be able to be working in Photoshop in one set of windows and have a compile session going on in a terminal window in the background.
Gary Lang
I chose OS X because it was a FreeBSD box that ran Office and had a professionally designed user interface system with compatibility with lots of commercial software that has been tested, compatible with the other apps on the platform and so on.
That is to say:
a) it compiles and runs everything I used on LINUX, including to my surprise XWindows programs such as GIMP b) it runs all my scripts c) it lets me do the same development I do on LINUX, in the same style with the same tools.
But:
d) it runs Office - I have zero file-sharing/mailing problems with the many many Windows people I work with (including myself)... the first Office for UNIX now. e) the clipboard actually works with no trouble f) the printer drivers are actually there and work g) the user experience is a joy instead of a joyless clone of Windows.
Part of the reason I chose this environment is that I am simply tired of looking at Windows (and) if I am tired of looking at Windows, why wouldn't I be tired of looking at a set of public domain user experiences that only strive to look like Windows with minor changes, with a clipboard that only partially works, from which I can't print without a hassle, let alone handle videos and photos with manufacturer-supplied drivers.
They were the first cmmercial os to fully embrace SOAP and XMLRPC. You can integrate apps running on OSX with ones running on any other platform, including Windows, Solaris, Palm, Linux and all the popular open source scriping envriomnents including tcl, php, python, perl, java. It's the first OS that has this stuff baked in.
Oh yes, the machine itself is beautiful, which I cannot say of a garden variety Dell or other PC clone. Oh yes, the machine itself is beautiful, which I cannot say of a garden variety Dell or other PC clone.
We had a home office issue coming up for February, so we made that the target for a review. So I called on Brent Simmons, a veteran developer on both UNIX/Linux and MacOS, to take a look under the hood of OS X and see what this new hybrid OS had to offer.